# 使用filter过滤数据
li = [1, 33, 44, 55, 22, 4, 5, 7, 9]
res = filter(lambda x: x > 30, li)
print(list(res))
# 使用map函数处理数据
li2 = [1, 33, 44, 55, 22, 4, 5, 7, 9]
res2 = map(lambda x: x * 2, li2)
print(list(res2))
# 使用exec执行python代码
code = """
a=100
b=200
print(a+b)
def func(a):
#     return a"""


# exec(code)
# res3 = func(3)
# print(res3)
# 使用all判断是否都为真
dic1={"zhang":1,"san":2}
la=map(lambda x:exec('dic[x]=2'),dic1)
print(dic1)

def func1(a, b, c):
    if all([a, b, c]):
        print("成功")


res4 = func1(1, 3, 5)


# 使用any判断只要有一个条件满足即可
def func2(a, b, c):
    if any([a, b, c]):
        print("成功")


res5 = func2(1, 3, 4)
# zip聚合函数
# 常规用法
title = ["a", "b", "c"]
value = [1, 2, 3]
num = [1, 2, 3, 4, 5, 6, 7]
dic = {}
for i in range(len(title)):
    dic[title[i]] = value[i]  # 给字典的键赋值，没有键则新增一个键值对
    print(dic)
# 使用zip：聚合函数
print(dict(zip(title, value)))
print(list(zip(title, value)))
print(set(zip(title, value)))
# 使用zip聚合多组数据
print(list(zip(title, value, num)))  # 以最短的数据为准

# 列表推导式结合zip扩展练习
cases = [
    ["姓名", "年龄", "身高"],
    ["张三", 15, 185],
    ["李四", 18, 178],
    ["王五", 20, 165]
]
print([dict(zip(cases[0], cases[i])) for i in range(1, 4)])

# 创建字典的方法
li=dict([("a",11),("b",22)])
print(li)